﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using LibTipoProducto;
using LibProducto;
using LibZona;
namespace ProyectoIngenieriaSoftware.Administracion
{
    public partial class Formulario_web11 : System.Web.UI.Page
    {
        #region "Variables Globales"

        static int intOpcionGrabar;//variable tipo switche o sentinela que graba dependiendo si es de agregar o modificar

        #endregion

         #region "Metodos Locales"
        //metodos propios del formulario
        private void LimpiarDatos(bool limpiar)
        {
            if (limpiar)
            {
                this.txtCodigo.Text = "";
                this.txtNombre.Text = "";
                this.txtValor.Text = "";
            }
        }

        void tipomensajeControles() {
            if (intOpcionGrabar == 1)
            {
                txtCodigo_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";
                txtNombre_TextBoxWatermarkExtender.WatermarkText = "Digité Nombre";
                txtValor_TextBoxWatermarkExtender.WatermarkText = "Digité Valor";
               

            }
            if (intOpcionGrabar == 2)
            {
                txtCodigo_TextBoxWatermarkExtender.WatermarkText = "Digité documento";
                txtNombre_TextBoxWatermarkExtender.WatermarkText = "Digité documento";
                txtValor_TextBoxWatermarkExtender.WatermarkText = "Digité documento";
     

            }
            if (intOpcionGrabar == 3)
            {
                txtCodigo_TextBoxWatermarkExtender.WatermarkText = "Digité documento";
                txtNombre_TextBoxWatermarkExtender.WatermarkText = "Digité documento";
                txtValor_TextBoxWatermarkExtender.WatermarkText = "Digité documento";

            }
        }

        private void Habilitar()
        {
            //enable es para habilitar o deshabilitar con true o false
            this.UpdatePanelCampos.Visible = false;//Donde estan los textbox codigo y descripcion
            this.MnuOpciones.Items[0].Enabled = true;//Agregar
            this.MnuOpciones.Items[1].Enabled = true;//Modificar
            this.MnuOpciones.Items[2].Enabled = true;//Buscar
            this.MnuOpciones.Items[3].Enabled = false;//Grabar
            this.MnuOpciones.Items[4].Enabled = false;//Cancelar
            this.MnuOpciones.Items[4].Text = "Cancelar";
            this.btnBuscar.Enabled = false;
            LimpiarDatos(true);
            //this.MnuOpciones.Items[5].Enabled = true;//Imprimir
        }

        private void DesHabilitar()
        {
            this.UpdatePanelCampos.Visible = true;
            this.MnuOpciones.Items[0].Enabled = false;
            this.MnuOpciones.Items[1].Enabled = false;
            this.MnuOpciones.Items[2].Enabled = false;
            this.MnuOpciones.Items[3].Enabled = true;
            this.MnuOpciones.Items[4].Enabled = true;
            this.MnuOpciones.Items[4].Text = "Cancelar";
            this.btnBuscar.Enabled = false;
            btnBuscar.Enabled = false;
            txtNombre.ReadOnly = false;
            txtValor.ReadOnly = false;
            LimpiarDatos(true);

            //this.mnnOpciones.Items[5].Enabled = false;//Imprimir
        }

         #endregion
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Page.IsPostBack)
            {

                if (txtNombre.Text != string.Empty)
                    lblMsj.Text = "";

                if (txtCodigo.Text != string.Empty)
                {

                    clsProducto objConsultar = new clsProducto();
                    objConsultar.codprod = Convert.ToInt32(txtCodigo.Text);
                    if (objConsultar.Consultar())
                    {
                        txtNombre.Text = objConsultar.NombreProd;
                        txtValor.Text = Convert.ToString(objConsultar.ValorProd);
                        cbiTipoProd.SelectedValue = Convert.ToString(objConsultar.CodTiPro);
                        cboEstado.SelectedValue = Convert.ToString(objConsultar.CodigoEstado);
                        lblMsj.Text = "El producto existe actualicelo si es necesario";
                    }
                    else
                        lblMsj.Text = "No existe el producto en la base de datos se puede agregar";
                }


            }

            if (!Page.IsPostBack)
            {
                Habilitar();
                llenarCombo();
                llenarComboEstado();
            }

           
        }
        private void llenarCombo()
        {
            clsTipoProducto objTipoProducto = new clsTipoProducto();
            objTipoProducto.CboTiPro = cbiTipoProd;
            if (objTipoProducto.LlenarCombo() == false)
            {
                lblMsj.Text = objTipoProducto.Error;
                lblMsj.Visible = true;
            }
            objTipoProducto = null;
        }
        private void llenarComboEstado()
        {
            clsZona objZona = new clsZona();
            objZona.CboZona = cboEstado;
            if (objZona.LlenarCombo() == false)
            {
               lblMsj.Text = objZona.Error;
               lblMsj.Visible = true;

            }
            objZona = null;
        }
        private bool GrabarRegistro()
        {
            switch (intOpcionGrabar)//para saber que opcion  selecciono, el selectedvalue es el que tiene el nombre de las opciones
            {
                case 1:
              
                   clsProducto objProducto = new clsProducto();
                   objProducto.codprod = Convert.ToInt32(txtCodigo.Text);
                   objProducto.NombreProd = txtNombre.Text;
                   objProducto.ValorProd = Convert.ToInt32(txtValor.Text);
                   objProducto.CodTiPro = Convert.ToInt32(cbiTipoProd.SelectedValue);
                   objProducto.CodigoEstado=cboEstado.SelectedValue;
                    if (objProducto.Ingresar())
                        lblMsj.Text = "Grabo el producto satisfactoriamente con el codigo: " + txtCodigo.Text;
                    else lblMsj.Text = objProducto.Error;
                    objProducto = null;
                    Habilitar();

                    break;

                case 2:
                     clsProducto objActualizar = new clsProducto();
                     objActualizar.codprod = Convert.ToInt32(txtCodigo.Text);
                     objActualizar.NombreProd = txtNombre.Text;
                     objActualizar.ValorProd = Convert.ToInt32(txtValor.Text);
                     objActualizar.CodTiPro = Convert.ToInt32(cbiTipoProd.SelectedValue);
                     objActualizar.CodigoEstado = cboEstado.SelectedValue;
                     if (objActualizar.Ingresar())
                        lblMsj.Text = "grabo";
                     else lblMsj.Text = objActualizar.Error;
                     objActualizar = null;
                    break;
               

            }

            return true;
        }

        protected void MnuOpciones_MenuItemClick(object sender, MenuEventArgs e)
        {

            switch (this.MnuOpciones.SelectedValue)//para saber que opcion  selecciono, el selectedvalue es el que tiene el nombre de las opciones
            {
                case "opcAgregar":
                    if (Roles.IsUserInRole("Cajero") == false)
                    {
                        lblTitulo.Text = "Agregar Producto";
                        lblMsj.Text = "";
                        intOpcionGrabar = 1;
                        tipomensajeControles();
                        DesHabilitar();
                        //para grabar un maestro->un insert en la BD

                        this.txtCodigo.Focus();
                    }
                    else lblMsj.Text = "No tienes los permisos para agregar un Producto";
                    break;

                case "OpcModificar":
                  
                    lblMsj.Text = "";
                    if (Roles.IsUserInRole("Cajero") == false)
                    {
                        lblTitulo.Text = "Actualización de Productos";
                        txtCodigo.Focus();
                        intOpcionGrabar = 2;
                        tipomensajeControles();
                        DesHabilitar();
                        this.btnBuscar.Enabled = true;
                    }
                    else
                        lblMsj.Text = "No tiene permisos para modificar el producto";
                    break;


                case "opcBuscar":
                    if (Roles.IsUserInRole("11") == false)
                    {
                        lblTitulo.Text = "Búsquedad de Productos";
                        lblMsj.Text = "";
                        intOpcionGrabar = 3;
                        tipomensajeControles();
                        DesHabilitar();
                        btnBuscar.Enabled = true;
                        txtNombre.ReadOnly = true;
                        txtValor.ReadOnly = true;
                        this.MnuOpciones.Items[3].Enabled = false;
                        txtCodigo.Focus();
                        this.MnuOpciones.Items[4].Text = "Salir de la Búsqueda";
                    }
                    else lblMsj.Text = "No tiene permisos para buscar productos";
                    break; 

                case "opcGrabar":
                    GrabarRegistro();
                    break;

                case "opcCancelar":
                    intOpcionGrabar = 0;
                    lblTitulo.Text = "Administración de Productos";
                    Habilitar();
                    break;
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            //este es el metodo de buscada del produdcto auiagrega el codigo como el otro ok?sisas ok espere yo miro como tenes la configuracion de roles
            clsProducto objConsultar = new clsProducto();
            objConsultar.codprod =Convert.ToInt32( txtCodigo.Text);
            if (objConsultar.Consultar())
            {
                    txtNombre.Text=objConsultar.NombreProd;
                    txtValor.Text = Convert.ToString(objConsultar.ValorProd);
                    cbiTipoProd.SelectedValue = Convert.ToString(objConsultar.CodTiPro);
                    cboEstado.SelectedValue = Convert.ToString(objConsultar.CodigoEstado);
            }
            lblMsj.Text = objConsultar.Error;
        }


    }
}